Computing devices such as computers, tablet computers, and smart phones may include one or more processors that each may further include one more computing cores. To reduce processing time and fully utilize the computing power of the processors, an operating system for the computing device may concurrently execute multiple applications and multiple threads of instructions within each applications. These applications and threads may be collectively referred to as tasks for the one or more processors herein.
When tasks run concurrently, they may attempt to concurrently access data stored in a file or a section of a file, collectively referred to as a record herein for convenience. A record may be stored in a storage including registers, cache, memory devices, hard drives, and networked storage devices. Concurrent accesses of a same record by different tasks may create unwanted race situations. For example, after task A reads from an address pointing to a record, task B may read the same record and update the record by writing to the address pointing to the record. If, subsequent to the write by task B, task A comes back and writes to the same record, task A may run the risk of unintentionally overwriting the results of task B—which is often undesirable and unsafe.